!> author: 左志华
!> date: 2022-07-02
!>
!> Mathematics <br>
!> 数学模块
module sph_math

    use sph_kinds, only: rk
    use seakeeping_constants, only: g, Pi, const

contains

    !> 粒子之间的距离 (distance)
    !> @note \( \sqrt(x*x + y*y) \) 比 \( \sqrt(x^2 + y^2) \) 、norm2 和 hypot 更快 <br>
    !> 所以在密集计算中，应该避免使用 norm2 和 hypot 。
    pure subroutine get_distance(x, y, d, r)
        real(rk), intent(in), dimension(2) :: x, y  !! 两点坐标
        real(rk), intent(out), dimension(2) :: d  !! 坐标轴距离
        real(rk), intent(out) :: r  !! 欧式距离

        d = x - y; r = sqrt(d(1)*d(1) + d(2)*d(2))

    end subroutine get_distance

end module sph_math
